package com.dd.cloud.user.req.doctor;

import com.dd.cloud.common.annotate.FileSuffix;
import com.dd.cloud.common.annotate.validation.IDcard;
import com.dd.cloud.common.annotate.validation.Phone;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;

/**
 * 机构管理员修改医生资料
 *
 * @author zk
 */
@Data
public class DoctorDetailUpdateReq {
    /**
     * 医生id
     */
    @NotNull(message = "医生id不能为空")
    private Integer doctorId;

    /**
     * 身份证号码
     */
    @IDcard
    private String idCard;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空")
    private String name;

    /**
     * 性别
     */
    @NotBlank(message = "性别不能为空")
    private String sex;

    /**
     * 出生日期
     */
    private LocalDate birthDate;

    /**
     * 年龄
     */
    @NotNull(message = "年龄不能为空")
    @Max(value = 120, message = "年龄范围应在18-120之间")
    @Min(value = 18, message = "年龄范围应在18-120之间")
    private Integer age;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区县
     */
    private String district;

    /**
     * 地址
     */
    private String addr;

    /**
     * 个人简介
     */
    private String introduction;

    /**
     * 手机号
     */
    @Phone
    @NotBlank(message = "手机号不能为空")
    private String mobileNumber;

    /**
     * 科室
     */
    private String department;

    /**
     * 擅长病种
     */
    private String goodAt;

    /**
     * 医生技术职称
     */
    private String proCertificate;

    /**
     * 机构ID
     */
    private Integer mechanId;

    /**
     * 医疗机构名称
     */
    private String organization;

    /**
     * 密码
     */
    private String password;

    /**
     * 资质类型
     * // 1.乡村医生
     * // 2.执业医师
     * // 3.医学生
     * // 4.中药师
     * // 5.爱好者
     */
    @NotNull(message = "资质类型不能为空")
    private Integer qualificationType;

    /**
     * 医师资格证书编号
     */
    private String quaCertificateNo;

    /**
     * 医生资格证书照片
     */
    @FileSuffix(head = false)
    private String quaCertificatePhoto;

    /**
     * 获取时间
     */
    private LocalDate quaCertificateDate;

    /**
     * 医师执业证书编号
     */
    private String praCertificateNo;

    /**
     * 执业医师资格证照片地址
     */
    @FileSuffix(head = false)
    private String praCertificatePhoto;

    /**
     * 医师职称证书图片地址
     */
    @FileSuffix(head = false)
    private String proCertificatePhoto;

    /**
     * 卫健信息
     */
    @FileSuffix(head = false)
    private String healthCommitteePhoto;

    /**
     * 备注
     */
    private String remark;

    /**
     * 医生头像地址
     */
    @FileSuffix(head = false)
    private String avatar;

    /**
     * 证书类型
     */
    private Integer certificateType;

    /**
     * 证书名称
     */
    private String certificateName;

    /**
     * 上传证书
     */
    @FileSuffix(head = false)
    private String certificateUrl;

    /**
     * 邀请码
     */
    private String codeRecord;

    /**
     * 医生执业证书获得时间
     */
    private LocalDate praCertificateDate;

    /**
     * 医生工号
     */
    private String workCard;

    /**
     * 医生属性
     */
    private String attribute;

    /**
     * 医生类型
     */
    private String doctorType;

    /**
     * 专业技术职务类别
     */
    private String technicalCategories;

    /**
     * 专业技术职务
     */
    private String professionalTechnicians;

    /**
     * 执业范围
     */
    private String practiceArea;

    /**
     * 参加工作时间
     */
    private LocalDate workDate;

    /**
     * 提交类型 0.提交 1.提交认证
     */
    @NotNull(message = "提交类型不能为空")
    private Integer isCertification;

    /**
     * 学历
     */
    private String educationBackground;

    /**
     * 专业名称
     */
    private String professionalTitle;

    /**
     * 爱好科室
     */
    private String hobbyDepartment;

    /**
     * 学校
     */
    private String school;

    /**
     * 身份证正面
     */
    private String idCardFront;

    /**
     * 身份证反面
     */
    private String idCardBack;
}
